The present invention relates to computer networks. More specifically, this invention is related to activating and executing software objects downloaded over a communications network.
The public data networks, commonly known as the Internet and colloquially known as the web, can be used to deliver not only electronic mail messages and web pages, but also software objects from a server computer to client computers connected to the Internet.
The Internet is a collection of interconnected computer networks, in which some computers are configured to function as server computers. Some other computers, which function as client computers, access data and other information available on the server computers. Typically, this access is done by means of a request-response sequence. The client computer sends a request message to the server computer, which responds to the request by sending a response message to the client computer. The client computer can be configured to send such request messages via a software program called a web browser, running on the client computer. If the response message from the server computer is an encoded message, such as a Hyper-Text Markup Language (HTML) encoded message, it can be displayed in a browser window at the client computer if the browser is programmed to interpret the response message.
The description of a preferred embodiment is better understood in the context of the terms web browser, a plug-in and a MIME-type. As mentioned above, a web browser or simply a browser is a program that runs on a user""s computer and allows the user to access the vast resources of information available on the Internet. Examples of browsers are those marketed by Netscape Corporation, of Sunnyvale, Calif., and Microsoft Corporation of Redmond, Wash. The browser provides a xe2x80x9cwindowxe2x80x9d to the Internet. Typically, a browser provides an area where a user types an addressxe2x80x94in a format called Universal Resource Locator (URL)xe2x80x94indicating the source of the information. The browser then sends a message to a web site indicated by the address and requests the web site to send the information in a response message as explained before. When a server computer at the web site responds to the request with a response message that contains a web page, the browser receives the response message, deciphers the message and displays the web page contained in the message on the user""s computer.
In general, manufacturers of browser programs provide only a limited number of facilities. There could be a need to provide enhanced functionality of the browser program in order to perform other functions such as display a moving image, play a voice message etc. Browser manufacturers such as Netscape provided users with utility programs known as xe2x80x9chelper applicationsxe2x80x9d to perform supplemental functions to enhance their browsers. However, these xe2x80x9chelper applicationsxe2x80x9d required the opening of a new window on a user""s computer.
A plug-in is a piece of software program that enhances the functionality of a web browser. In general, a plug-in is developed and marketed by companies other than those who manufacture web browsers. Some plug-ins allow other types of communication media to be delivered and displayed on a browser, or they impart animation or dynamic imagery to the contents of the Internet. Examples of vendors of such plug-ins are: Shockwave(copyright), Real Networks(copyright), ISYS(trademark), Adobe(copyright) and others. A plug-in program typically includes a content player component analogous to a video cassette player for presenting information from a content file, or for performing other custom actions responsive to the information from a content file. A user typically uses a browser to visit a web site and downloads the plug-in from the web site and installs it. The process of installation of a plug-in typically makes the plug-in accessible to a browser program. Then, the user can play a downloaded content filexe2x80x94which is analogous to a video cassette of a moviexe2x80x94using the Internet and the browser as delivery mechanisms. In contrast to a xe2x80x9chelper application,xe2x80x9d a plug-in applicationxe2x80x94if it is installed in a browser, for example, by launching the browser anewxe2x80x94is recognized automatically by the browser and its function is integrated into the main HTML file that is being presented. Thus, the advantage of a plug-in is that it can be integrated into a browser without changing the browser""s user interface. For a list of plug-ins available for a Netscape browser, see Browser Plug-Ins, dated 1999, (visited Mar. 2, 1999),  less than http://home.netscape.com/plugins/index.html greater than .
MIME stands for Multi-purpose Internet Mail Extension. MIME types specify the type of data contained in a file downloaded by a browser. In order to transmit a file of a particular type of data via a browser, the file type must be supported by a web server that hosts the file. In order for MIME to work properly, the type of the file and its file-name extension must be properly identified. Some commonly used MIME types are as follows:
MIME types work as follows. When a file with extension or suffix xe2x80x9c.htmxe2x80x9d or xe2x80x9c.htmlxe2x80x9d is identified by a web server, the file is assumed to be of type xe2x80x9chtmlxe2x80x9d available in American Standard Code for Information Interchange (ASCII) xe2x80x9ctextxe2x80x9d format. The server sends this information to a browser in the response message to the browser. Typically a Common Gateway Interface (CGI) program that outputs the contents of a URL to a browser is encoded as follows in the first line that is output, identifying the message being sent.
Content-type: text/html
Thus, MIME works by attaching a xe2x80x9cheaderxe2x80x9d to each message transmitted. The header contains the content type and subtype of the data contained in the message. This allows the server and browser to serve and present each message correctly. It also allows users to create pages that combine messages with different data types; for example, one could create an HTML document that has both image and sound files within it.
A browser that receives such a message understands how to interpret the content and use the appropriate code to decipher the message to present it to a user. Typically, browsers use MIME types to invoke an appropriate plug-in program. For example, suppose a user requests downloading a QuickTime(trademark) movie. The browser receives the movie as a file whose name ends with the suffix or extension xe2x80x9c.movxe2x80x9d and whose data is identified as the MIME type for QuickTime(trademark). When the browser receives this file, it notes that the MIME type of QuickTime(trademark), and takes the action appropriate for that MIME type. If the browser is configured to launch a QuickTime(trademark) playerxe2x80x94which is available as a plug-in applicationxe2x80x94every time it receives a file with the QuickTime(trademark) MIME type, the browser will automatically do so every time a user downloads a QuickTime(trademark) movie. For more information on MIME types can be obtained from the web page entitled xe2x80x9cMIME Documentation,xe2x80x9d dated 1999, (visited Mar. 2, 1999),  less than http://home.netscape.com/assist/helper_apps/mime.html greater than .
A web browser can also be used as a vehicle to distribute software objects to a client computer. The details of how this can be achieved are disclosed in a commonly-owned U.S. patent application, Ser. No. 09/208,735, filed Nov. 13, 1998, which describes a method and system for securing, managing and optimizing a computer, the contents of which are hereby incorporated by reference into the present application. Disclosed therein are ways to download a software object over a communications network and execute the object from a remote location such as a remotely located server computer over the network. It is stated in that application that to achieve the goals stated therein, a preferred embodiment envisions a browser enabled to support delivery of objects that can be remotely executed, as exemplified by a technology architecture such as Component Object Model (COM), proposed by Microsoft Corporation.
COM is a software architecture that allows the creation of applications from components of software. COM can be viewed as an architectural foundation upon which other software services with more complex superstructures can be built. An added advantage is that the superstructures can be changed, such as when a newer version of software is created, without having to change the foundation. It provides the mechanisms such as a binary standard for function calls between components and a uniform way to allow applications to call each other via devices called interfaces, which can be reused. More information on COM can be obtained from the web page xe2x80x9cThe Component Object Model: Technical Overview,xe2x80x9d dated 1996, (visited Feb. 25, 1999),  less than http://www.microsoft.com/com/wpaper/Com_mod1.asp greater than .
Some commercially available browsers, however, do not support a technology similar to COM. Noteworthy among the browsers that do not support a COM-like architecture is the browser marketed under the name Navigator version 4.0 by the Netscape Corporation, of Sunnyvale, Calif. Additionally, browsers that are marketed by some vendors make available a number of user-friendly features to create a customized user interface. If a user uses a different browser program than the one that is configured to access the customized user interface, the user is inconvenienced.
Because of the differences in the features supported by the various browsers, providers of software applications configure their web sites to support only one or the other versions of browsers. Alternatively, operators of web sites or vendors who wish to market software that works on browsers available from different vendors write the same software for each browser type. This increases the cost of software development. Additionally, this places several restrictions on the ways to design the software that can function on browsers of different types.
Thus, today, a provider of software objects has two choices: either he can limit his business to provisioning products and services only to those users that use a browser configured to support a COM-like architecture; or he can write the same software or services in to suit the peculiarities of browsers manufactured by different vendors. This situation can be greatly improved if there is available a system and method to allow a software vendor to provide standard applications or services to a user of a client computer without regard to whether or not the browser executing on the client computer is configured to support a certain architecture.
In accordance with a preferred embodiment, a method and system for using features of one browser in conjunction with the features of another browser is provided. In one aspect, the method includes a server computer programmed to detect if a first type of browser was being used when a client computer connects to the server computer. If the client computer used a second type of browser, then the server computer is configured to detect whether a plug-in program is downloaded and installed on the client computer; and if the plug-in is not present on the client computer, to download and install the plug-in on the client computer. In a yet another aspect, the preferred embodiment is directed to loading and installing the plug-in into a browser running on the client computer, and transferring control of the browser execution thread to an instruction sequence contained in the plug-in. In a further aspect, the preferred embodiment is directed to intercepting and sub-classing the events generated in the browser.
In a preferred embodiment, in another aspect, is directed to a plug-in program, which upon downloading to a client computer and installed into a browser running on the client computer, is configured to transfer control of the execution of the browser to code contained in the plug-in temporarily. In another aspect, the plug-in is configured to intercept events generated in the browser and process them according to the instructions contained in the plug-in. In this manner, the plug-in is configured to enable the execution of a program written for a browser that supports a COM-like architecture within the browser which is not configured to support the COM-like architecture.